package ejercicio4;



public abstract class Personaje implements Dibujable{
	
	public double vida;
	public double destreza;
	private EstrategiaDeLucha estrategiaDeLucha;
	
	
	
	public Personaje(double vida, double destreza) {
		super();
		this.vida = vida*10;
		this.destreza = destreza;
	}
	
	public double getVida() {
		return vida;
	}
	public void setVida(double vida) {
		this.vida = vida;
	}
	public double getDestreza() {
		return destreza;
	}
	public void setDestreza(double destreza) {
		this.destreza = destreza;
	}

	
	public EstrategiaDeLucha getEstrategiaDeLucha() {
		return estrategiaDeLucha;
	}

	public void setEstrategiaDeLucha(EstrategiaDeLucha estrategiaDeLucha) {
		this.estrategiaDeLucha = estrategiaDeLucha;
	}
	
	private boolean tieneVida ()
	{
		return getVida()>0;
	}
	
	public final void luchar (Personaje otroPersonaje )
	{
		while (tieneVida()&&otroPersonaje.tieneVida())
		{
			// Para este personaje
			double ataque = otroPersonaje.getAtaque();
			double defensa = this.getDefensa();
			setVida(getVida()-(ataque-defensa));
			
			// Para el otro personaje
			ataque = getAtaque();
			defensa = otroPersonaje.getDefensa();
			otroPersonaje.setVida(getVida()-(ataque-defensa));
		}		
	}
	
	public abstract double getAtaque ();
	public abstract double getDefensa ();
	
	public abstract void caminar ();
	
	public void actualizar(String clima)
	{
		System.out.println("....................................");
		System.out.println(this);
		System.out.println("ha cambiado el clima a " +clima);
		System.out.println("....................................");
	}
	
	public String toString()
	{
		return this.getClass().getName().substring(this.getClass().getName().indexOf("@")+1,this.getClass().getName().length());
		
	}
	
	@Override
	public void dibujarse() {
		System.out.println("dibujando personaje");
		
	}
	
	
}
